home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / tcl / xf2.3-p / xf2 / xf2.3 / xftutorial / script.xf / placing.scrpt < prev    next >
Encoding:
Text File  |  1993-11-20  |  12.3 KB  |  330 lines

  1. # tutorial
  2. global placingLast
  3. set placingLast 5
  4. global placingLastSectionDone
  5. set placingLastSectionDone -1
  6.  
  7.  
  8. set placingName0 {Placing}
  9. set placingText0 {\
  10. This chapter tries to introduce you into the usage of the
  11. placer. The placer provides simple fixed placement of
  12. windows, where you specify the exact size and location of
  13. one window, called the slave, within another window, called
  14. the master. The placer also provides rubber-sheet placement,
  15. where you specify the size and location of the slave in
  16. terms of the dimensions of the master, so that the slave
  17. changes size and location in response to changes in the size
  18. of the master. Lastly, the placer allows you to mix these
  19. styles of placement so that, for example, the slave has a
  20. fixed width and height but is centered inside the master.
  21. ((Copyright) by John Ousterhout :-).
  22.  
  23. The placer can be used with the placing dialog window or by
  24. directly placing the widgets with the configured placing
  25. binding (Mod1-Button1). This binding allows placing and
  26. sizing. If the widget is touchtched at the border the widget
  27. is sized. If the widget is toutched at the middle the widget
  28. is moved. The direct manipulation is only enabled if the
  29. layout dialog "Configure|Layout" is activated , or layouting
  30. is allowd without this box "Options|General options".
  31.  
  32. To give you a basic idea, we will now play a little
  33. with the options that are available with the placer.}
  34.  
  35. set placingCommand0 {\
  36. XFMiscClearInterpreter
  37. global xfConf xfPath
  38. set xfConf(saveInterval) 0
  39. set xfConf(onlyOneWindow) 0
  40. set xfConf(externalEditor) ""
  41. set xfConf(geometry) packer
  42. set xfConf(newPacker) 0
  43. source "$xfPath(src)/xfpacking.tcl"
  44. wm geometry . 300x300
  45. frame .frame -relief raised -borderwidth 1
  46. frame .frame.frame1 -relief raised -borderwidth 1
  47. frame .frame.frame2 -relief raised -borderwidth 1
  48. button .frame.frame1.button1 -text .frame1.button1
  49. button .frame.frame1.button2 -text .frame1.button2
  50. button .frame.frame1.button3 -text .frame1.button3
  51. button .frame.frame2.button1 -text .frame2.button1
  52. button .frame.frame2.button2 -text .frame2.button2
  53. button .frame.frame2.button3 -text .frame2.button3
  54. pack append .frame.frame1 .frame.frame1.button1 {top} .frame.frame1.button2 {top} .frame.frame1.button3 {top} 
  55. pack append .frame.frame2 .frame.frame2.button1 {top} .frame.frame2.button2 {top} .frame.frame2.button3 {top} 
  56. pack append .frame .frame.frame1 {top} .frame.frame2 {top}
  57. pack append . .frame "top fill expand"
  58. XFPlacing . config Toplevel
  59. update idletasks}
  60.  
  61.  
  62. set placingName1 {Placing}
  63. set placingText1 {\
  64. First we make the both frames to "placed" widgets and place
  65. the first frame into the upper left corner, by giving it the
  66. position 0,0. The second frame is placed in the middle of
  67. the parent by giving it the relative position 0.5,0.5.}
  68.  
  69. set placingCommand1 {\
  70. .xfPlacingToplevel.frame2.children.widgets.widgets select from 1
  71. .xfPlacingToplevel.frame2.children.widgets.widgets select to 1
  72. update idletasks
  73. .xfPlacingToplevel.functions.master configure -state active
  74. update idletasks
  75. .xfPlacingToplevel.functions.master configure -relief sunken
  76. update idletasks
  77. .xfPlacingToplevel.functions.master invoke
  78. update idletasks
  79. .xfPlacingToplevel.functions.master configure -state normal
  80. update idletasks
  81. .xfPlacingToplevel.functions.master configure -relief raised
  82. update idletasks
  83. if {"[lindex [.xfPlacingToplevel.frame2.children.widgets.widgets get 2] 1]" == ".frame.frame2"} {
  84.   .xfPlacingToplevel.frame2.children.widgets.widgets select from 2
  85.   .xfPlacingToplevel.frame2.children.widgets.widgets select to 2
  86. } {
  87.   .xfPlacingToplevel.frame2.children.widgets.widgets select from 6
  88.   .xfPlacingToplevel.frame2.children.widgets.widgets select to 6
  89. }
  90. update idletasks
  91. .xfPlacingToplevel.functions.child configure -state active
  92. update idletasks
  93. .xfPlacingToplevel.functions.child configure -relief sunken
  94. update idletasks
  95. .xfPlacingToplevel.functions.child invoke
  96. update idletasks
  97. .xfPlacingToplevel.functions.child configure -state normal
  98. update idletasks
  99. .xfPlacingToplevel.functions.child configure -relief raised
  100. update idletasks
  101. XFPlacingGetPlacing .frame Toplevel
  102. update idletasks
  103. if {"[lindex [.xfPlacingToplevel.frame2.children.widgets.widgets get 2] 1]" == ".frame.frame2"} {
  104.   .xfPlacingToplevel.frame2.children.widgets.widgets select from 6
  105.   .xfPlacingToplevel.frame2.children.widgets.widgets select to 6
  106. } {
  107.   .xfPlacingToplevel.frame2.children.widgets.widgets select from 2
  108.   .xfPlacingToplevel.frame2.children.widgets.widgets select to 2
  109. }
  110. update idletasks
  111. .xfPlacingToplevel.functions.child configure -state active
  112. update idletasks
  113. .xfPlacingToplevel.functions.child configure -relief sunken
  114. update idletasks
  115. .xfPlacingToplevel.functions.child invoke
  116. update idletasks
  117. .xfPlacingToplevel.functions.child configure -state normal
  118. update idletasks
  119. .xfPlacingToplevel.functions.child configure -relief raised
  120. update idletasks
  121. XFPlacingGetPlacing .frame Toplevel
  122. update idletasks
  123. .xfPlacingToplevel.frame2.pos.posbutt.x.rel configure -state active
  124. update idletasks
  125. .xfPlacingToplevel.frame2.pos.posbutt.x.rel configure -relief sunken
  126. update idletasks
  127. .xfPlacingToplevel.frame2.pos.posbutt.x.rel invoke
  128. update idletasks
  129. .xfPlacingToplevel.frame2.pos.posbutt.x.rel configure -state normal
  130. update idletasks
  131. .xfPlacingToplevel.frame2.pos.posbutt.x.rel configure -relief raised
  132. update idletasks
  133. .xfPlacingToplevel.frame2.pos.posbutt.y.rel configure -state active
  134. update idletasks
  135. .xfPlacingToplevel.frame2.pos.posbutt.y.rel configure -relief sunken
  136. update idletasks
  137. .xfPlacingToplevel.frame2.pos.posbutt.y.rel invoke
  138. update idletasks
  139. .xfPlacingToplevel.frame2.pos.posbutt.y.rel configure -state normal
  140. update idletasks
  141. .xfPlacingToplevel.frame2.pos.posbutt.y.rel configure -relief raised
  142. update idletasks
  143. .xfPlacingToplevel.frame2.pos.pos1 set 50
  144. update idletasks
  145. .xfPlacingToplevel.frame2.pos.pos2 set 50
  146. update idletasks}
  147.  
  148.  
  149. set placingName2 {Placing}
  150. set placingText2 {\
  151. The second frame is centered, but this currently means, that
  152. it's upper left corner is centered. To center the frame
  153. itself, we select the "C" button for the anchor option.}
  154.  
  155. set placingCommand2 {\
  156. .xfPlacingToplevel.frame2.anchor.f2.c invoke
  157. update idletasks}
  158.  
  159.  
  160. set placingName3 {Placing}
  161. set placingText3 {\
  162. What I show you now is an effect, that can be very
  163. frustrating if you don't know why and how this happens. If
  164. the parent of a number of children has no specified geometry
  165. (width and height) because it was originally packed or the
  166. parent is still packed, this effect will occur if you change
  167. the children from packed children to placed children. The
  168. parent gets smaller and smaller. This is because packed
  169. children set the size of the parent.  Placed children don't
  170. request any size from the parent. So the parent gets smaller
  171. and smaller the less packed children it contains.}
  172.  
  173. # we want to manipulate frame.frame2...
  174. set placingCommand3 {\
  175. if {"[lindex [.xfPlacingToplevel.frame2.children.widgets.widgets get 2] 1]" == ".frame.frame2"} {
  176.   .xfPlacingToplevel.frame2.children.widgets.widgets select from 2
  177.   .xfPlacingToplevel.frame2.children.widgets.widgets select to 2
  178. } {
  179.   .xfPlacingToplevel.frame2.children.widgets.widgets select from 6
  180.   .xfPlacingToplevel.frame2.children.widgets.widgets select to 6
  181. }
  182. update idletasks
  183. .xfPlacingToplevel.functions.master configure -state active
  184. update idletasks
  185. .xfPlacingToplevel.functions.master configure -relief sunken
  186. update idletasks
  187. .xfPlacingToplevel.functions.master invoke
  188. update idletasks
  189. .xfPlacingToplevel.functions.master configure -state normal
  190. update idletasks
  191. .xfPlacingToplevel.functions.master configure -relief raised
  192. update idletasks
  193. if {"[lindex [.xfPlacingToplevel.frame2.children.widgets.widgets get 2] 1]" == ".frame.frame2"} {
  194.   .xfPlacingToplevel.frame2.children.widgets.widgets select from 3
  195.   .xfPlacingToplevel.frame2.children.widgets.widgets select to 3
  196. } {
  197.   .xfPlacingToplevel.frame2.children.widgets.widgets select from 7
  198.   .xfPlacingToplevel.frame2.children.widgets.widgets select to 7
  199. }
  200. update idletasks
  201. .xfPlacingToplevel.functions.child configure -state active
  202. update idletasks
  203. .xfPlacingToplevel.functions.child configure -relief sunken
  204. update idletasks
  205. .xfPlacingToplevel.functions.child invoke
  206. update idletasks
  207. .xfPlacingToplevel.functions.child configure -state normal
  208. update idletasks
  209. .xfPlacingToplevel.functions.child configure -relief raised
  210. update idletasks
  211. XFPlacingGetPlacing .frame.frame2 Toplevel
  212. update idletasks
  213. .xfPlacingToplevel.frame2.pos.pos1 set 10
  214. update idletasks
  215. .xfPlacingToplevel.frame2.pos.pos2 set 10
  216. update idletasks
  217. if {"[lindex [.xfPlacingToplevel.frame2.children.widgets.widgets get 2] 1]" == ".frame.frame2"} {
  218.   .xfPlacingToplevel.frame2.children.widgets.widgets select from 4
  219.   .xfPlacingToplevel.frame2.children.widgets.widgets select to 4
  220. } {
  221.   .xfPlacingToplevel.frame2.children.widgets.widgets select from 8
  222.   .xfPlacingToplevel.frame2.children.widgets.widgets select to 8
  223. }
  224. update idletasks
  225. .xfPlacingToplevel.functions.child configure -state active
  226. update idletasks
  227. .xfPlacingToplevel.functions.child configure -relief sunken
  228. update idletasks
  229. .xfPlacingToplevel.functions.child invoke
  230. update idletasks
  231. .xfPlacingToplevel.functions.child configure -state normal
  232. update idletasks
  233. .xfPlacingToplevel.functions.child configure -relief raised
  234. update idletasks
  235. XFPlacingGetPlacing .frame.frame2 Toplevel
  236. update idletasks
  237. .xfPlacingToplevel.frame2.pos.pos1 set 50
  238. update idletasks
  239. .xfPlacingToplevel.frame2.pos.pos2 set 50
  240. update idletasks
  241. if {"[lindex [.xfPlacingToplevel.frame2.children.widgets.widgets get 2] 1]" == ".frame.frame2"} {
  242.   .xfPlacingToplevel.frame2.children.widgets.widgets select from 5
  243.   .xfPlacingToplevel.frame2.children.widgets.widgets select to 5
  244. } {
  245.   .xfPlacingToplevel.frame2.children.widgets.widgets select from 9
  246.   .xfPlacingToplevel.frame2.children.widgets.widgets select to 9
  247. }
  248. update idletasks
  249. .xfPlacingToplevel.functions.child configure -state active
  250. update idletasks
  251. .xfPlacingToplevel.functions.child configure -relief sunken
  252. update idletasks
  253. .xfPlacingToplevel.functions.child invoke
  254. update idletasks
  255. .xfPlacingToplevel.functions.child configure -state normal
  256. update idletasks
  257. .xfPlacingToplevel.functions.child configure -relief raised
  258. update idletasks
  259. XFPlacingGetPlacing .frame.frame2 Toplevel
  260. update idletasks
  261. .xfPlacingToplevel.frame2.pos.pos1 set 80
  262. update idletasks
  263. .xfPlacingToplevel.frame2.pos.pos2 set 80
  264. update idletasks}
  265.  
  266.  
  267. set placingName4 {Placing}
  268. set placingText4 {\
  269. To give the parent a size that shows all it's children, you
  270. can either expand the packed parent or specify a width and
  271. height with the placer for the parent.}
  272.  
  273. set placingCommand4 {\
  274. .xfPlacingToplevel.frame2.children.widgets.widgets select from 1
  275. .xfPlacingToplevel.frame2.children.widgets.widgets select to 1
  276. update idletasks
  277. .xfPlacingToplevel.functions.master configure -state active
  278. update idletasks
  279. .xfPlacingToplevel.functions.master configure -relief sunken
  280. update idletasks
  281. .xfPlacingToplevel.functions.master invoke
  282. update idletasks
  283. .xfPlacingToplevel.functions.master configure -state normal
  284. update idletasks
  285. .xfPlacingToplevel.functions.master configure -relief raised
  286. update idletasks
  287. .xfPlacingToplevel.frame2.children.childs.childs select from 1
  288. .xfPlacingToplevel.frame2.children.childs.childs select to 1
  289. update idletasks
  290. XFPlacingGetPlacing .frame Toplevel
  291. update idletasks
  292. .xfPlacingToplevel.frame2.geo.geobutt.width.rel configure -state active
  293. update idletasks
  294. .xfPlacingToplevel.frame2.geo.geobutt.width.rel configure -relief sunken
  295. update idletasks
  296. .xfPlacingToplevel.frame2.geo.geobutt.width.rel invoke
  297. update idletasks
  298. .xfPlacingToplevel.frame2.geo.geobutt.width.rel configure -state normal
  299. update idletasks
  300. .xfPlacingToplevel.frame2.geo.geobutt.width.rel configure -relief raised
  301. update idletasks
  302. .xfPlacingToplevel.frame2.geo.geobutt.height.rel configure -state active
  303. update idletasks
  304. .xfPlacingToplevel.frame2.geo.geobutt.height.rel configure -relief sunken
  305. update idletasks
  306. .xfPlacingToplevel.frame2.geo.geobutt.height.rel invoke
  307. update idletasks
  308. .xfPlacingToplevel.frame2.geo.geobutt.height.rel configure -state normal
  309. update idletasks
  310. .xfPlacingToplevel.frame2.geo.geobutt.height.rel configure -relief raised
  311. update idletasks
  312. .xfPlacingToplevel.frame2.geo.geo1 set 50
  313. update idletasks
  314. .xfPlacingToplevel.frame2.geo.geo2 set 50
  315. update idletasks}
  316.  
  317.  
  318. set placingName5 {Placing}
  319. set placingText5 {\
  320. That was all...}
  321.  
  322. set placingCommand5 {
  323. .xfPlacingToplevel.frame1.ok activate
  324. update idletasks
  325. .xfPlacingToplevel.frame1.ok configure -relief sunken
  326. update idletasks
  327. .xfPlacingToplevel.frame1.ok invoke
  328. update idletasks}
  329.  
  330.